const path = require("path");

//引入该插件
const CompressionWebpackPlugin = require("compression-webpack-plugin");
//匹配此 {RegExp} 的资源
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i;

module.exports = {
  publicPath: "./", // 公共路径(必须有的)
  outputDir: "dist", // 输出文件目录
  assetsDir: "static", //静态资源文件名称
  filenameHashing: false,
  lintOnSave: false,
  productionSourceMap: false, //去除打包后js的map文件
  devServer: {
    //启动项目在8080端口自动打开
    open: true,
    port: 8080,
    proxy: null,
  },
  //去掉console
  configureWebpack: (config) => {
    // 判断为生产模式下，保存console的
    if (process.env.NODE_ENV === "production") {
      config.optimization.minimizer.map((arg) => {
        const option = arg.options.terserOptions.compress;
        option.drop_console = true; // 打开开关
        return arg;
      });
    }
    const plugins = [];
    // start 生成 gzip 压缩文件
    // plugins.push(
    //   new CompressionWebpackPlugin({
    //     filename: "[path].gz[query]", //目标资源名称
    //     algorithm: "gzip",
    //     test: productionGzipExtensions, //处理所有匹配此 {RegExp} 的资源
    //     threshold: 10240, //只处理比这个值大的资源。按字节计算(楼主设置10K以上进行压缩)
    //     minRatio: 0.8, //只有压缩率比这个值小的资源才会被处理
    //   })
    // );

    // End 生成 gzip 压缩文件
    // config.plugins = [...config.plugins, ...plugins];
  },
  // less
  pluginOptions: {
    "style-resources-loader": {
      preProcessor: "less",
      patterns: [path.resolve(__dirname, "./src/assets/css/variable.less")],
    },
  },

  // worker
  chainWebpack: (config) => {
    config.module
      .rule("worker")
      .test(/\.worker\.js$/)
      .use("worker-loader")
      .loader("worker-loader")
      .options({
        inline: true,
        fallback: false,
      })
      .end();
      // swf
      // config.module
      // .rule('swf')
      // .test(/\.swf$/)
      // .use('url-loader')
      // .loader('url-loader')
      // .options({
      //   limit: 10000
      // })
  },
  
};
